"""
写出一个程序，通过输入的年份，可以判断该年是否为闰年
(注意，需要了解判断闰年的公式)
判断闰年的规则
1.将年份除以4，如果能整除且不能被100整除，就是闰年。为普通闰年
2如果能被400整除，无论其是否同时被4和100整除，他都是是闰年。例如2000，为世纪闰年可以被400整除
"""
print("第一题：")
while True:
    try: #只判断了输入的是否为整形数字，其实时偷懒了，因为如果用try except的话里面嵌套if elif的话，应该将公历年份开始的范围也加在这个判断里面与这个判断是否为整形数字and同时成立关系才会跳出循环这种写法。
        year = int(input("请输入一个年份:"))
        break
    except ValueError:  #这个方法是做第二题时，出现了错误，百度后学到的防止用户输入信息错误，导致程序停止运行的方法，可以优化当用户输入错误时程序可以给予反馈继续运行(好用)
        print("输入无效，请输入一个有效的数字作为年份。")
if year % 4 == 0 and year % 100 != 0:
    print(f"{year}年 为普通闰年")
elif year % 400 == 0:
    print(f"{year}年 为世纪闰年")
else:
    print(f"{year}年 不是闰年,是平年")

#也可以简化if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0: 这样来判断是否为闰年，但我查百度发现闰年也分为普通闰年与世纪闰年，故而选择了上述方法
"""
写出一个接受用户输入身高、体重、来计算人体BMI指数的程序
思路：
1.首先判断性别 男or女
2.获取并验证身高与体重
3.根据BMI=体重/身高^2计算BMI值
4.最后根据BMI的数值给出建议
"""
print("第二题：")#
print("本程序是计算人体BMI指数的程序，请根据提示输入相关信息。")
# sex = input("请输入您的性别（男/女）：") #这些注释掉的地方请忽略掉，刚开始设想是以 通过获得身高体重参数后得出BMI数值，再根据性别与年龄参照BMI对照表来写程序，用if elif语句，但是有问题，于是直接用if语句判断BMI值，然后给出建议
# if sex == "男" or sex == "女":
while True: #while循环以及 try except语句不是我写的，我开始没写这个，运行后发现当输入身高或者体重的值时，输入值错误导致程序终止，上网百度的，
        try: # try except这个语句同上，我没见过，也是在网上查了之后才知道有这么个东西可以用来于捕捉和处理错误（异常）的机制。异常处理让程序在遇到错误时，不会崩溃，而是能够给用户反馈并继续执行
            height = float(input("请输入您的身高（单位：米, 例如 1.70米）："))
            if height > 0:  # 身高不能为负数或零
                break   #满足height>0 条件后跳出身高判断循环，进入体重判断循环
            else:   #不满足height>0 条件后执行else语句
                print("身高不能为零或负数，请重新输入。")
        except ValueError:  #当输入身高或体重带小数点时发现报错，于是用try except语句捕捉错误，并提示输入无效，请输入一个有效的数字作为身高。
            print("输入无效，请输入一个有效的数字作为身高。")
print(f"您输入的身高是：{height} 米")

    # 获取并验证体重输入（使用浮动数类型 float）
while True:
        try:
            weight = float(input("请输入您的体重（单位：kg, 例如 70kg）："))
            if weight > 0:  # 体重不能为负数或零
                break
            else:
                print("体重不能为零或负数，请重新输入。")
        except ValueError:
            print("输入无效，请输入一个有效的数字作为体重。")
print(f"您输入的体重是：{weight} kg")

bmi = weight / (height ** 2)    # BMI公式：体重/(身高^2)

advice = "" # 定义advice建议变量为空字符串
    # if sex == "男":
if bmi < 18.5:    #这个参数是查的百度，成年人BMI范围：18.5~23.9为正常，24-27.9为超重，大于或等于28为肥胖
    advice = "体重过轻，请注意营养均衡，适当增加饮食摄入。"
elif 18.5 <= bmi < 24:
    advice = "体重正常，请继续保持健康的生活方式。"
elif 24 <= bmi < 28:
    advice = "体重偏重，请注意饮食和加强锻炼。"
else:
    advice = "体重过重，请加强锻炼并调整饮食结构。"
    # elif sex == "女":
    #     if bmi < 18.5:
    #         advice = "体重过轻，请注意营养均衡，适当增加饮食摄入。"
    #     elif 18.5 <= bmi < 23.5:
    #         advice = "体重正常，请继续保持健康的生活方式。"
    #     elif 23.5 <= bmi < 27:
    #         advice = "体重偏重，请注意饮食和适量运动。"
    #     else:
    #         advice = "体重过重，请加强锻炼并调整饮食习惯。"

    # 输出结果
print(f"\n您的BMI是：{bmi:.2f}") #f-string格式化        :.2f表示保留两位小数
print(f"健康建议：{advice}")     #f-string格式化： {advice}表示输出advice的值
# else:
#     print("性别输入错误，请输入 '男' 或 '女'！")

